package junyi.card;

import junyi.power.ActionChain;

/**
 * User: Junyi BEI
 * Date: 12-9-30
 * Time: 下午3:42
 */
public abstract class FunctionModifier {
  public final static int UNCHANGED_STEP = 0;
  public final static int OVERRIDE_WITH_SUCCESS_STEP = 1;
  public final static int OVERRIDE_WITH_FAILURE_STEP = 2;
  public final static int ADD_ACTION_CHAIN_BEFORE_STEP = 3;
  public final static int ADD_ACTION_CHAIN_AFTER_STEP = 4;
  public final static int REPLACE_STEP_BY_ACTION_CHAIN = 5;

  public abstract FunctionModifier merge(FunctionModifier f);

  public abstract int getModification(int s);
  
  public abstract int getStartStep();
  
  public abstract int getStartCarry();
  
  public abstract ActionChain getActionChain(int s);
}
